home *** CD-ROM | disk | FTP | other *** search
/ Apple Reference & Presen…on Library 1994 September / ARPLE-Sept-94-Supplement.iso / AppleSoft / QuickTime 2.0 / Interfaces / ImageCompression.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-20  |  32.6 KB  |  891 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        ImageCompression.h
  3.  
  4.     Copyright:    © 1991-1994 by Apple Computer, Inc., all rights reserved.
  5.  
  6. */
  7.  
  8. #ifndef __IMAGECOMPRESSION__
  9. #define __IMAGECOMPRESSION__
  10.  
  11. #ifndef __QUICKDRAW__
  12. #include <Quickdraw.h>
  13. /*    #include <Types.h>                                            */
  14. /*        #include <ConditionalMacros.h>                            */
  15. /*        #include <MixedMode.h>                                    */
  16. /*            #include <Traps.h>                                    */
  17. /*    #include <QuickdrawText.h>                                    */
  18. /*        #include <IntlResources.h>                                */
  19. #endif
  20.  
  21. #ifndef __QDOFFSCREEN__
  22. #include <QDOffscreen.h>
  23. #endif
  24.  
  25. #ifndef __TYPES__
  26. #endif
  27.  
  28. #ifndef __COMPONENTS__
  29. #include <Components.h>
  30. #endif
  31.  
  32. #ifndef __STANDARDFILE__
  33. #include <StandardFile.h>
  34. /*    #include <Dialogs.h>                                        */
  35. /*        #include <Windows.h>                                    */
  36. /*            #include <Events.h>                                    */
  37. /*                #include <OSUtils.h>                            */
  38. /*            #include <Controls.h>                                */
  39. /*                #include <Menus.h>                                */
  40. /*        #include <TextEdit.h>                                    */
  41. /*    #include <Files.h>                                            */
  42. /*        #include <SegLoad.h>                                    */
  43. #endif
  44.  
  45. #ifndef __TOOLUTILS__
  46. #include <ToolUtils.h>
  47. /*    #include <TextUtils.h>                                        */
  48. /*        #include <Script.h>                                        */
  49. /*    #include <FixMath.h>                                        */
  50. #endif
  51.  
  52. #if defined(powerc) || defined (__powerc)
  53. #pragma options align=mac68k
  54. #endif
  55. struct MatrixRecord {
  56.     Fixed                        matrix[3][3];
  57. };
  58. #if defined(powerc) || defined(__powerc)
  59. #pragma options align=reset
  60. #endif
  61.  
  62. typedef struct MatrixRecord MatrixRecord;
  63.  
  64. typedef MatrixRecord *MatrixRecordPtr;
  65.  
  66. #if defined(powerc) || defined (__powerc)
  67. #pragma options align=mac68k
  68. #endif
  69. struct FixedPoint {
  70.     Fixed                        x;
  71.     Fixed                        y;
  72. };
  73. #if defined(powerc) || defined(__powerc)
  74. #pragma options align=reset
  75. #endif
  76.  
  77. typedef struct FixedPoint FixedPoint;
  78.  
  79. #if defined(powerc) || defined (__powerc)
  80. #pragma options align=mac68k
  81. #endif
  82. struct FixedRect {
  83.     Fixed                        left;
  84.     Fixed                        top;
  85.     Fixed                        right;
  86.     Fixed                        bottom;
  87. };
  88. #if defined(powerc) || defined(__powerc)
  89. #pragma options align=reset
  90. #endif
  91.  
  92. typedef struct FixedRect FixedRect;
  93.  
  94. #define codecInfoDoes1 (1L<<0)
  95.  
  96. #define codecInfoDoes2 (1L<<1)
  97.  
  98. #define codecInfoDoes4 (1L<<2)
  99.  
  100. #define codecInfoDoes8 (1L<<3)
  101.  
  102. #define codecInfoDoes16 (1L<<4)
  103.  
  104. #define codecInfoDoes32 (1L<<5)
  105.  
  106. #define codecInfoDoesDither (1L<<6)
  107.  
  108. #define codecInfoDoesStretch (1L<<7)
  109.  
  110. #define codecInfoDoesShrink (1L<<8)
  111.  
  112. #define codecInfoDoesMask (1L<<9)
  113.  
  114. #define codecInfoDoesTemporal (1L<<10)
  115.  
  116. #define codecInfoDoesDouble (1L<<11)
  117.  
  118. #define codecInfoDoesQuad (1L<<12)
  119.  
  120. #define codecInfoDoesHalf (1L<<13)
  121.  
  122. #define codecInfoDoesQuarter (1L<<14)
  123.  
  124. #define codecInfoDoesRotate (1L<<15)
  125.  
  126. #define codecInfoDoesHorizFlip (1L<<16)
  127.  
  128. #define codecInfoDoesVertFlip (1L<<17)
  129.  
  130. #define codecInfoDoesSkew (1L<<18)
  131.  
  132. #define codecInfoDoesBlend (1L<<19)
  133.  
  134. #define codecInfoDoesWarp (1L<<20)
  135.  
  136. #define codecInfoDoesRecompress (1L<<21)
  137.  
  138. #define codecInfoDoesSpool (1L<<22)
  139.  
  140. #define codecInfoDoesRateConstrain (1L<<23)
  141.  
  142. #define codecInfoDepth1 (1L<<0)
  143.  
  144. #define codecInfoDepth2 (1L<<1)
  145.  
  146. #define codecInfoDepth4 (1L<<2)
  147.  
  148. #define codecInfoDepth8 (1L<<3)
  149.  
  150. #define codecInfoDepth16 (1L<<4)
  151.  
  152. #define codecInfoDepth32 (1L<<5)
  153.  
  154. #define codecInfoDepth24 (1L<<6)
  155.  
  156. #define codecInfoDepth33 (1L<<7)
  157.  
  158. #define codecInfoDepth34 (1L<<8)
  159.  
  160. #define codecInfoDepth36 (1L<<9)
  161.  
  162. #define codecInfoDepth40 (1L<<10)
  163.  
  164. #define codecInfoStoresClut (1L<<11)
  165.  
  166. #define codecInfoDoesLossless (1L<<12)
  167.  
  168. #define codecInfoSequenceSensitive (1L<<13)
  169.  
  170. #define codecFlagUseImageBuffer (1L<<0)
  171.  
  172. #define codecFlagUseScreenBuffer (1L<<1)
  173.  
  174. #define codecFlagUpdatePrevious (1L<<2)
  175.  
  176. #define codecFlagNoScreenUpdate (1L<<3)
  177.  
  178. #define codecFlagWasCompressed (1L<<4)
  179.  
  180. #define codecFlagDontOffscreen (1L<<5)
  181.  
  182. #define codecFlagUpdatePreviousComp (1L<<6)
  183.  
  184. #define codecFlagForceKeyFrame (1L<<7)
  185.  
  186. #define codecFlagOnlyScreenUpdate (1L<<8)
  187.  
  188. #define codecFlagLiveGrab (1L<<9)
  189.  
  190. #define codecFlagDontUseNewImageBuffer (1L<<10)
  191.  
  192. #define codecFlagInterlaceUpdate (1L<<11)
  193.  
  194. #define codeFlagCatchUpDiff (1L<<12)
  195.  
  196. #define codecFlagUsedNewImageBuffer (1L<<14)
  197.  
  198. #define codecFlagUsedImageBuffer (1L<<15)
  199.  
  200. #define codecCantWhenErr -8974
  201.  
  202. #define codecCantQueueErr -8975
  203.  
  204. #define codecNothingToBlitErr -8976
  205.  
  206. #define codecMinimumDataSize 32768
  207.  
  208. #define compressorComponentType 'imco'
  209.  
  210. #define decompressorComponentType 'imdc'
  211.  
  212. typedef Component CompressorComponent;
  213.  
  214. typedef Component DecompressorComponent;
  215.  
  216. typedef Component CodecComponent;
  217.  
  218. #define anyCodec ((CodecComponent)0)
  219.  
  220. #define bestSpeedCodec ((CodecComponent)-1)
  221.  
  222. #define bestFidelityCodec ((CodecComponent)-2)
  223.  
  224. #define bestCompressionCodec ((CodecComponent)-3)
  225.  
  226. typedef long CodecType;
  227.  
  228. typedef unsigned short CodecFlags;
  229.  
  230. typedef unsigned long CodecQ;
  231.  
  232. #define codecLosslessQuality 0x400L
  233.  
  234. #define codecMaxQuality 0x3ffL
  235.  
  236. #define codecMinQuality 0x000L
  237.  
  238. #define codecLowQuality 0x100L
  239.  
  240. #define codecNormalQuality 0x200L
  241.  
  242. #define codecHighQuality 0x300L
  243.  
  244. typedef pascal OSErr (*ICMDataProcPtr)(Ptr *dataP, long bytesNeeded, long refcon);
  245.  
  246. enum {
  247.     uppICMDataProcInfo = kPascalStackBased
  248.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  249.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr*)))
  250.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  251.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  252. };
  253.  
  254. #if USESROUTINEDESCRIPTORS
  255. typedef UniversalProcPtr ICMDataUPP;
  256.  
  257. #define CallICMDataProc(userRoutine, dataP, bytesNeeded, refcon)        \
  258.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMDataProcInfo, (dataP), (bytesNeeded), (refcon))
  259. #define NewICMDataProc(userRoutine)        \
  260.         (ICMDataUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMDataProcInfo, GetCurrentISA())
  261. #else
  262. typedef ICMDataProcPtr ICMDataUPP;
  263.  
  264. #define CallICMDataProc(userRoutine, dataP, bytesNeeded, refcon)        \
  265.         (*(userRoutine))((dataP), (bytesNeeded), (refcon))
  266. #define NewICMDataProc(userRoutine)        \
  267.         (ICMDataUPP)(userRoutine)
  268. #endif
  269.  
  270. typedef pascal OSErr (*ICMFlushProcPtr)(Ptr data, long bytesAdded, long refcon);
  271.  
  272. enum {
  273.     uppICMFlushProcInfo = kPascalStackBased
  274.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  275.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  276.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  277.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  278. };
  279.  
  280. #if USESROUTINEDESCRIPTORS
  281. typedef UniversalProcPtr ICMFlushUPP;
  282.  
  283. #define CallICMFlushProc(userRoutine, data, bytesAdded, refcon)        \
  284.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMFlushProcInfo, (data), (bytesAdded), (refcon))
  285. #define NewICMFlushProc(userRoutine)        \
  286.         (ICMFlushUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMFlushProcInfo, GetCurrentISA())
  287. #else
  288. typedef ICMFlushProcPtr ICMFlushUPP;
  289.  
  290. #define CallICMFlushProc(userRoutine, data, bytesAdded, refcon)        \
  291.         (*(userRoutine))((data), (bytesAdded), (refcon))
  292. #define NewICMFlushProc(userRoutine)        \
  293.         (ICMFlushUPP)(userRoutine)
  294. #endif
  295.  
  296. typedef pascal void (*ICMCompletionProcPtr)(OSErr result, short flags, long refcon);
  297.  
  298. enum {
  299.     uppICMCompletionProcInfo = kPascalStackBased
  300.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(OSErr)))
  301.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  302.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  303. };
  304.  
  305. #if USESROUTINEDESCRIPTORS
  306. typedef UniversalProcPtr ICMCompletionUPP;
  307.  
  308. #define CallICMCompletionProc(userRoutine, result, flags, refcon)        \
  309.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMCompletionProcInfo, (result), (flags), (refcon))
  310. #define NewICMCompletionProc(userRoutine)        \
  311.         (ICMCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMCompletionProcInfo, GetCurrentISA())
  312. #else
  313. typedef ICMCompletionProcPtr ICMCompletionUPP;
  314.  
  315. #define CallICMCompletionProc(userRoutine, result, flags, refcon)        \
  316.         (*(userRoutine))((result), (flags), (refcon))
  317. #define NewICMCompletionProc(userRoutine)        \
  318.         (ICMCompletionUPP)(userRoutine)
  319. #endif
  320.  
  321. #define codecCompletionSource (1<<0)
  322.  
  323. #define codecCompletionDest (1<<1)
  324.  
  325. typedef pascal OSErr (*ICMProgressProcPtr)(short message, Fixed completeness, long refcon);
  326.  
  327. enum {
  328.     uppICMProgressProcInfo = kPascalStackBased
  329.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  330.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  331.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Fixed)))
  332.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  333. };
  334.  
  335. #if USESROUTINEDESCRIPTORS
  336. typedef UniversalProcPtr ICMProgressUPP;
  337.  
  338. #define CallICMProgressProc(userRoutine, message, completeness, refcon)        \
  339.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMProgressProcInfo, (message), (completeness), (refcon))
  340. #define NewICMProgressProc(userRoutine)        \
  341.         (ICMProgressUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMProgressProcInfo, GetCurrentISA())
  342. #else
  343. typedef ICMProgressProcPtr ICMProgressUPP;
  344.  
  345. #define CallICMProgressProc(userRoutine, message, completeness, refcon)        \
  346.         (*(userRoutine))((message), (completeness), (refcon))
  347. #define NewICMProgressProc(userRoutine)        \
  348.         (ICMProgressUPP)(userRoutine)
  349. #endif
  350.  
  351. #define codecProgressOpen 0
  352.  
  353. #define codecProgressUpdatePercent 1
  354.  
  355. #define codecProgressClose 2
  356.  
  357. typedef pascal void (*StdPixProcPtr)(PixMap *src, Rect *srcRect, MatrixRecord *matrix, short mode, RgnHandle mask, PixMap *matte, Rect *matteRect, short flags);
  358.  
  359. enum {
  360.     uppStdPixProcInfo = kPascalStackBased
  361.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(PixMap*)))
  362.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  363.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(MatrixRecord*)))
  364.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
  365.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(RgnHandle)))
  366.          | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(PixMap*)))
  367.          | STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(Rect*)))
  368.          | STACK_ROUTINE_PARAMETER(8, SIZE_CODE(sizeof(short)))
  369. };
  370.  
  371. #if USESROUTINEDESCRIPTORS
  372. typedef UniversalProcPtr StdPixUPP;
  373.  
  374. #define CallStdPixProc(userRoutine, src, srcRect, matrix, mode, mask, matte, matteRect, flags)        \
  375.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppStdPixProcInfo, (src), (srcRect), (matrix), (mode), (mask), (matte), (matteRect), (flags))
  376. #define NewStdPixProc(userRoutine)        \
  377.         (StdPixUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppStdPixProcInfo, GetCurrentISA())
  378. #else
  379. typedef StdPixProcPtr StdPixUPP;
  380.  
  381. #define CallStdPixProc(userRoutine, src, srcRect, matrix, mode, mask, matte, matteRect, flags)        \
  382.         (*(userRoutine))((src), (srcRect), (matrix), (mode), (mask), (matte), (matteRect), (flags))
  383. #define NewStdPixProc(userRoutine)        \
  384.         (StdPixUPP)(userRoutine)
  385. #endif
  386.  
  387. typedef long ImageSequence;
  388.  
  389. #if defined(powerc) || defined (__powerc)
  390. #pragma options align=mac68k
  391. #endif
  392. struct ICMProgressProcRecord {
  393.     ICMProgressUPP                progressProc;
  394.     long                        progressRefCon;
  395. };
  396. #if defined(powerc) || defined(__powerc)
  397. #pragma options align=reset
  398. #endif
  399.  
  400. typedef struct ICMProgressProcRecord ICMProgressProcRecord;
  401.  
  402. typedef ICMProgressProcRecord *ICMProgressProcRecordPtr;
  403.  
  404. #if defined(powerc) || defined (__powerc)
  405. #pragma options align=mac68k
  406. #endif
  407. struct ICMCompletionProcRecord {
  408.     ICMCompletionUPP            completionProc;
  409.     long                        completionRefCon;
  410. };
  411. #if defined(powerc) || defined(__powerc)
  412. #pragma options align=reset
  413. #endif
  414.  
  415. typedef struct ICMCompletionProcRecord ICMCompletionProcRecord;
  416.  
  417. typedef ICMCompletionProcRecord *ICMCompletionProcRecordPtr;
  418.  
  419. #if defined(powerc) || defined (__powerc)
  420. #pragma options align=mac68k
  421. #endif
  422. struct ICMDataProcRecord {
  423.     ICMDataUPP                    dataProc;
  424.     long                        dataRefCon;
  425. };
  426. #if defined(powerc) || defined(__powerc)
  427. #pragma options align=reset
  428. #endif
  429.  
  430. typedef struct ICMDataProcRecord ICMDataProcRecord;
  431.  
  432. typedef ICMDataProcRecord *ICMDataProcRecordPtr;
  433.  
  434. #if defined(powerc) || defined (__powerc)
  435. #pragma options align=mac68k
  436. #endif
  437. struct ICMFlushProcRecord {
  438.     ICMFlushUPP                    flushProc;
  439.     long                        flushRefCon;
  440. };
  441. #if defined(powerc) || defined(__powerc)
  442. #pragma options align=reset
  443. #endif
  444.  
  445. typedef struct ICMFlushProcRecord ICMFlushProcRecord;
  446.  
  447. typedef ICMFlushProcRecord *ICMFlushProcRecordPtr;
  448.  
  449. typedef pascal void (*ICMAlignmentProcPtr)(Rect *rp, long refcon);
  450.  
  451. enum {
  452.     uppICMAlignmentProcInfo = kPascalStackBased
  453.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Rect*)))
  454.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  455. };
  456.  
  457. #if USESROUTINEDESCRIPTORS
  458. typedef UniversalProcPtr ICMAlignmentUPP;
  459.  
  460. #define CallICMAlignmentProc(userRoutine, rp, refcon)        \
  461.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMAlignmentProcInfo, (rp), (refcon))
  462. #define NewICMAlignmentProc(userRoutine)        \
  463.         (ICMAlignmentUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMAlignmentProcInfo, GetCurrentISA())
  464. #else
  465. typedef ICMAlignmentProcPtr ICMAlignmentUPP;
  466.  
  467. #define CallICMAlignmentProc(userRoutine, rp, refcon)        \
  468.         (*(userRoutine))((rp), (refcon))
  469. #define NewICMAlignmentProc(userRoutine)        \
  470.         (ICMAlignmentUPP)(userRoutine)
  471. #endif
  472.  
  473. #if defined(powerc) || defined (__powerc)
  474. #pragma options align=mac68k
  475. #endif
  476. struct ICMAlignmentProcRecord {
  477.     ICMAlignmentUPP                alignmentProc;
  478.     long                        alignmentRefCon;
  479. };
  480. #if defined(powerc) || defined(__powerc)
  481. #pragma options align=reset
  482. #endif
  483.  
  484. typedef struct ICMAlignmentProcRecord ICMAlignmentProcRecord;
  485.  
  486. typedef ICMAlignmentProcRecord *ICMAlignmentProcRecordPtr;
  487.  
  488. #if defined(powerc) || defined (__powerc)
  489. #pragma options align=mac68k
  490. #endif
  491. struct DataRateParams {
  492.     long                        dataRate;
  493.     long                        dataOverrun;
  494.     long                        frameDuration;
  495.     long                        keyFrameRate;
  496.     CodecQ                        minSpatialQuality;
  497.     CodecQ                        minTemporalQuality;
  498. };
  499. #if defined(powerc) || defined(__powerc)
  500. #pragma options align=reset
  501. #endif
  502.  
  503. typedef struct DataRateParams DataRateParams;
  504.  
  505. typedef DataRateParams *DataRateParamsPtr;
  506.  
  507. #if defined(powerc) || defined (__powerc)
  508. #pragma options align=mac68k
  509. #endif
  510. struct ImageDescription {
  511.     long                        idSize;
  512.     CodecType                    cType;
  513.     long                        resvd1;
  514.     short                        resvd2;
  515.     short                        dataRefIndex;
  516.     short                        version;
  517.     short                        revisionLevel;
  518.     long                        vendor;
  519.     CodecQ                        temporalQuality;
  520.     CodecQ                        spatialQuality;
  521.     short                        width;
  522.     short                        height;
  523.     Fixed                        hRes;
  524.     Fixed                        vRes;
  525.     long                        dataSize;
  526.     short                        frameCount;
  527.     Str31                        name;
  528.     short                        depth;
  529.     short                        clutID;
  530. };
  531. #if defined(powerc) || defined(__powerc)
  532. #pragma options align=reset
  533. #endif
  534.  
  535. typedef struct ImageDescription ImageDescription;
  536.  
  537. typedef ImageDescription *ImageDescriptionPtr;
  538.  
  539. typedef ImageDescription **ImageDescriptionHandle;
  540.  
  541. #if defined(powerc) || defined (__powerc)
  542. #pragma options align=mac68k
  543. #endif
  544. struct CodecInfo {
  545.     Str31                        typeName;
  546.     short                        version;
  547.     short                        revisionLevel;
  548.     long                        vendor;
  549.     long                        decompressFlags;
  550.     long                        compressFlags;
  551.     long                        formatFlags;
  552.     unsigned char                compressionAccuracy;
  553.     unsigned char                decompressionAccuracy;
  554.     unsigned short                compressionSpeed;
  555.     unsigned short                decompressionSpeed;
  556.     unsigned char                compressionLevel;
  557.     char                        resvd;
  558.     short                        minimumHeight;
  559.     short                        minimumWidth;
  560.     short                        decompressPipelineLatency;
  561.     short                        compressPipelineLatency;
  562.     long                        privateData;
  563. };
  564. #if defined(powerc) || defined(__powerc)
  565. #pragma options align=reset
  566. #endif
  567.  
  568. typedef struct CodecInfo CodecInfo;
  569.  
  570. #if defined(powerc) || defined (__powerc)
  571. #pragma options align=mac68k
  572. #endif
  573. struct CodecNameSpec {
  574.     CodecComponent                codec;
  575.     CodecType                    cType;
  576.     Str31                        typeName;
  577.     Handle                        name;
  578. };
  579. #if defined(powerc) || defined(__powerc)
  580. #pragma options align=reset
  581. #endif
  582.  
  583. typedef struct CodecNameSpec CodecNameSpec;
  584.  
  585. #if defined(powerc) || defined (__powerc)
  586. #pragma options align=mac68k
  587. #endif
  588. struct CodecNameSpecList {
  589.     short                        count;
  590.     CodecNameSpec                list[1];
  591. };
  592. #if defined(powerc) || defined(__powerc)
  593. #pragma options align=reset
  594. #endif
  595.  
  596. typedef struct CodecNameSpecList CodecNameSpecList;
  597.  
  598. typedef CodecNameSpecList *CodecNameSpecListPtr;
  599.  
  600. #define defaultDither 0
  601.  
  602. #define forceDither 1
  603.  
  604. #define suppressDither 2
  605.  
  606. #define useColorMatching 4
  607.  
  608. #if defined(powerc) || defined (__powerc)
  609. #pragma options align=mac68k
  610. #endif
  611. struct ICMFrameTimeRecord {
  612.     Int64Bit                    value;
  613.     long                        scale;
  614.     void                        *base;
  615.     long                        duration;
  616.     Fixed                        rate;
  617. };
  618. #if defined(powerc) || defined(__powerc)
  619. #pragma options align=reset
  620. #endif
  621.  
  622. typedef struct ICMFrameTimeRecord ICMFrameTimeRecord;
  623.  
  624. typedef ICMFrameTimeRecord *ICMFrameTimePtr;
  625.  
  626. #ifdef __cplusplus
  627. extern "C" {
  628. #endif
  629.  
  630. extern pascal OSErr CodecManagerVersion(long *version)
  631.  TWOWORDINLINE(0x7000, 0xAAA3);
  632. extern pascal OSErr GetCodecNameList(CodecNameSpecListPtr *list, short showAll)
  633.  TWOWORDINLINE(0x7001, 0xAAA3);
  634. extern pascal OSErr DisposeCodecNameList(CodecNameSpecListPtr list)
  635.  TWOWORDINLINE(0x700F, 0xAAA3);
  636. extern pascal OSErr GetCodecInfo(CodecInfo *info, CodecType cType, CodecComponent codec)
  637.  TWOWORDINLINE(0x7003, 0xAAA3);
  638. extern pascal OSErr GetMaxCompressionSize(PixMapHandle src, const Rect *srcRect, short colorDepth, CodecQ quality, CodecType cType, CompressorComponent codec, long *size)
  639.  TWOWORDINLINE(0x7004, 0xAAA3);
  640. extern pascal OSErr GetCompressionTime(PixMapHandle src, const Rect *srcRect, short colorDepth, CodecType cType, CompressorComponent codec, CodecQ *spatialQuality, CodecQ *temporalQuality, unsigned long *compressTime)
  641.  TWOWORDINLINE(0x7005, 0xAAA3);
  642. extern pascal OSErr CompressImage(PixMapHandle src, const Rect *srcRect, CodecQ quality, CodecType cType, ImageDescriptionHandle desc, Ptr data)
  643.  TWOWORDINLINE(0x7006, 0xAAA3);
  644. extern pascal OSErr FCompressImage(PixMapHandle src, const Rect *srcRect, short colorDepth, CodecQ quality, CodecType cType, CompressorComponent codec, CTabHandle clut, CodecFlags flags, long bufferSize, ICMFlushProcRecordPtr flushProc, ICMProgressProcRecordPtr progressProc, ImageDescriptionHandle desc, Ptr data)
  645.  TWOWORDINLINE(0x7007, 0xAAA3);
  646. extern pascal OSErr DecompressImage(Ptr data, ImageDescriptionHandle desc, PixMapHandle dst, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle mask)
  647.  TWOWORDINLINE(0x7008, 0xAAA3);
  648. extern pascal OSErr FDecompressImage(Ptr data, ImageDescriptionHandle desc, PixMapHandle dst, const Rect *srcRect, MatrixRecordPtr matrix, short mode, RgnHandle mask, PixMapHandle matte, const Rect *matteRect, CodecQ accuracy, DecompressorComponent codec, long bufferSize, ICMDataProcRecordPtr dataProc, ICMProgressProcRecordPtr progressProc)
  649.  TWOWORDINLINE(0x7009, 0xAAA3);
  650. extern pascal OSErr CompressSequenceBegin(ImageSequence *seqID, PixMapHandle src, PixMapHandle prev, const Rect *srcRect, const Rect *prevRect, short colorDepth, CodecType cType, CompressorComponent codec, CodecQ spatialQuality, CodecQ temporalQuality, long keyFrameRate, CTabHandle clut, CodecFlags flags, ImageDescriptionHandle desc)
  651.  TWOWORDINLINE(0x700A, 0xAAA3);
  652. extern pascal OSErr CompressSequenceFrame(ImageSequence seqID, PixMapHandle src, const Rect *srcRect, CodecFlags flags, Ptr data, long *dataSize, unsigned char *similarity, ICMCompletionProcRecordPtr asyncCompletionProc)
  653.  TWOWORDINLINE(0x700B, 0xAAA3);
  654. extern pascal OSErr DecompressSequenceBegin(ImageSequence *seqID, ImageDescriptionHandle desc, CGrafPtr port, GDHandle gdh, const Rect *srcRect, MatrixRecordPtr matrix, short mode, RgnHandle mask, CodecFlags flags, CodecQ accuracy, DecompressorComponent codec)
  655.  TWOWORDINLINE(0x700D, 0xAAA3);
  656. extern pascal OSErr DecompressSequenceBeginS(ImageSequence *seqID, ImageDescriptionHandle desc, Ptr data, long dataSize, CGrafPtr port, GDHandle gdh, const Rect *srcRect, MatrixRecordPtr matrix, short mode, RgnHandle mask, CodecFlags flags, CodecQ accuracy, DecompressorComponent codec)
  657.  FOURWORDINLINE(0x203C, 0x30, 0x5D, 0xAAA3);
  658. extern pascal OSErr DecompressSequenceFrame(ImageSequence seqID, Ptr data, CodecFlags inFlags, CodecFlags *outFlags, ICMCompletionProcRecordPtr asyncCompletionProc)
  659.  TWOWORDINLINE(0x700E, 0xAAA3);
  660. extern pascal OSErr DecompressSequenceFrameS(ImageSequence seqID, Ptr data, long dataSize, CodecFlags inFlags, CodecFlags *outFlags, ICMCompletionProcRecordPtr asyncCompletionProc)
  661.  FOURWORDINLINE(0x203C, 0x16, 0x47, 0xAAA3);
  662. extern pascal OSErr DecompressSequenceFrameWhen(ImageSequence seqID, Ptr data, long dataSize, CodecFlags inFlags, CodecFlags *outFlags, ICMCompletionProcRecordPtr asyncCompletionProc, const ICMFrameTimePtr frameTime)
  663.  FOURWORDINLINE(0x203C, 0x1A, 0x5E, 0xAAA3);
  664. extern pascal OSErr CDSequenceFlush(ImageSequence seqID)
  665.  FOURWORDINLINE(0x203C, 0x4, 0x5F, 0xAAA3);
  666. extern pascal OSErr SetDSequenceMatrix(ImageSequence seqID, MatrixRecordPtr matrix)
  667.  TWOWORDINLINE(0x7010, 0xAAA3);
  668. extern pascal OSErr SetDSequenceMatte(ImageSequence seqID, PixMapHandle matte, const Rect *matteRect)
  669.  TWOWORDINLINE(0x7011, 0xAAA3);
  670. extern pascal OSErr SetDSequenceMask(ImageSequence seqID, RgnHandle mask)
  671.  TWOWORDINLINE(0x7012, 0xAAA3);
  672. extern pascal OSErr SetDSequenceTransferMode(ImageSequence seqID, short mode, const RGBColor *opColor)
  673.  TWOWORDINLINE(0x7013, 0xAAA3);
  674. extern pascal OSErr SetDSequenceDataProc(ImageSequence seqID, ICMDataProcRecordPtr dataProc, long bufferSize)
  675.  TWOWORDINLINE(0x7014, 0xAAA3);
  676. extern pascal OSErr SetDSequenceAccuracy(ImageSequence seqID, CodecQ accuracy)
  677.  TWOWORDINLINE(0x7034, 0xAAA3);
  678. extern pascal OSErr SetDSequenceSrcRect(ImageSequence seqID, const Rect *srcRect)
  679.  TWOWORDINLINE(0x7035, 0xAAA3);
  680. extern pascal OSErr GetDSequenceImageBuffer(ImageSequence seqID, GWorldPtr *gworld)
  681.  TWOWORDINLINE(0x7015, 0xAAA3);
  682. extern pascal OSErr GetDSequenceScreenBuffer(ImageSequence seqID, GWorldPtr *gworld)
  683.  TWOWORDINLINE(0x7016, 0xAAA3);
  684. extern pascal OSErr SetCSequenceQuality(ImageSequence seqID, CodecQ spatialQuality, CodecQ temporalQuality)
  685.  TWOWORDINLINE(0x7017, 0xAAA3);
  686. extern pascal OSErr SetCSequencePrev(ImageSequence seqID, PixMapHandle prev, const Rect *prevRect)
  687.  TWOWORDINLINE(0x7018, 0xAAA3);
  688. extern pascal OSErr SetCSequenceFlushProc(ImageSequence seqID, ICMFlushProcRecordPtr flushProc, long bufferSize)
  689.  TWOWORDINLINE(0x7033, 0xAAA3);
  690. extern pascal OSErr SetCSequenceKeyFrameRate(ImageSequence seqID, long keyframerate)
  691.  TWOWORDINLINE(0x7036, 0xAAA3);
  692. extern pascal OSErr GetCSequenceKeyFrameRate(ImageSequence seqID, long *keyframerate)
  693.  FOURWORDINLINE(0x203C, 0x8, 0x4B, 0xAAA3);
  694. extern pascal OSErr GetCSequencePrevBuffer(ImageSequence seqID, GWorldPtr *gworld)
  695.  TWOWORDINLINE(0x7019, 0xAAA3);
  696. extern pascal OSErr CDSequenceBusy(ImageSequence seqID)
  697.  TWOWORDINLINE(0x701A, 0xAAA3);
  698. extern pascal OSErr CDSequenceEnd(ImageSequence seqID)
  699.  TWOWORDINLINE(0x701B, 0xAAA3);
  700. extern pascal OSErr GetCompressedImageSize(ImageDescriptionHandle desc, Ptr data, long bufferSize, ICMDataProcRecordPtr dataProc, long *dataSize)
  701.  TWOWORDINLINE(0x701C, 0xAAA3);
  702. extern pascal OSErr GetSimilarity(PixMapHandle src, const Rect *srcRect, ImageDescriptionHandle desc, Ptr data, Fixed *similarity)
  703.  TWOWORDINLINE(0x701D, 0xAAA3);
  704. extern pascal OSErr GetImageDescriptionCTable(ImageDescriptionHandle desc, CTabHandle *ctable)
  705.  TWOWORDINLINE(0x701E, 0xAAA3);
  706. extern pascal OSErr SetImageDescriptionCTable(ImageDescriptionHandle desc, CTabHandle ctable)
  707.  TWOWORDINLINE(0x701F, 0xAAA3);
  708. extern pascal OSErr GetImageDescriptionExtension(ImageDescriptionHandle desc, Handle *extension, long type, long index)
  709.  TWOWORDINLINE(0x7020, 0xAAA3);
  710. extern pascal OSErr SetImageDescriptionExtension(ImageDescriptionHandle desc, Handle extension, long type)
  711.  TWOWORDINLINE(0x7021, 0xAAA3);
  712. extern pascal OSErr RemoveImageDescriptionExtension(ImageDescription **desc, long type, long index)
  713.  FOURWORDINLINE(0x203C, 0xC, 0x3A, 0xAAA3);
  714. extern pascal OSErr CountImageDescriptionExtensionType(ImageDescription **desc, long type, long *count)
  715.  FOURWORDINLINE(0x203C, 0xC, 0x3B, 0xAAA3);
  716. extern pascal OSErr GetNextImageDescriptionExtensionType(ImageDescription **desc, long *type)
  717.  FOURWORDINLINE(0x203C, 0x8, 0x3C, 0xAAA3);
  718. extern pascal OSErr FindCodec(CodecType cType, CodecComponent specCodec, CompressorComponent *compressor, DecompressorComponent *decompressor)
  719.  TWOWORDINLINE(0x7023, 0xAAA3);
  720. extern pascal OSErr CompressPicture(PicHandle srcPicture, PicHandle dstPicture, CodecQ quality, CodecType cType)
  721.  TWOWORDINLINE(0x7024, 0xAAA3);
  722. extern pascal OSErr FCompressPicture(PicHandle srcPicture, PicHandle dstPicture, short colorDepth, CTabHandle clut, CodecQ quality, short doDither, short compressAgain, ICMProgressProcRecordPtr progressProc, CodecType cType, CompressorComponent codec)
  723.  TWOWORDINLINE(0x7025, 0xAAA3);
  724. extern pascal OSErr CompressPictureFile(short srcRefNum, short dstRefNum, CodecQ quality, CodecType cType)
  725.  TWOWORDINLINE(0x7026, 0xAAA3);
  726. extern pascal OSErr FCompressPictureFile(short srcRefNum, short dstRefNum, short colorDepth, CTabHandle clut, CodecQ quality, short doDither, short compressAgain, ICMProgressProcRecordPtr progressProc, CodecType cType, CompressorComponent codec)
  727.  TWOWORDINLINE(0x7027, 0xAAA3);
  728. extern pascal OSErr GetPictureFileHeader(short refNum, Rect *frame, OpenCPicParams *header)
  729.  TWOWORDINLINE(0x7028, 0xAAA3);
  730. extern pascal OSErr DrawPictureFile(short refNum, const Rect *frame, ICMProgressProcRecordPtr progressProc)
  731.  TWOWORDINLINE(0x7029, 0xAAA3);
  732. extern pascal OSErr DrawTrimmedPicture(PicHandle srcPicture, const Rect *frame, RgnHandle trimMask, short doDither, ICMProgressProcRecordPtr progressProc)
  733.  TWOWORDINLINE(0x702E, 0xAAA3);
  734. extern pascal OSErr DrawTrimmedPictureFile(short srcRefnum, const Rect *frame, RgnHandle trimMask, short doDither, ICMProgressProcRecordPtr progressProc)
  735.  TWOWORDINLINE(0x702F, 0xAAA3);
  736. extern pascal OSErr MakeThumbnailFromPicture(PicHandle picture, short colorDepth, PicHandle thumbnail, ICMProgressProcRecordPtr progressProc)
  737.  TWOWORDINLINE(0x702A, 0xAAA3);
  738. extern pascal OSErr MakeThumbnailFromPictureFile(short refNum, short colorDepth, PicHandle thumbnail, ICMProgressProcRecordPtr progressProc)
  739.  TWOWORDINLINE(0x702B, 0xAAA3);
  740. extern pascal OSErr MakeThumbnailFromPixMap(PixMapHandle src, const Rect *srcRect, short colorDepth, PicHandle thumbnail, ICMProgressProcRecordPtr progressProc)
  741.  TWOWORDINLINE(0x702C, 0xAAA3);
  742. extern pascal OSErr TrimImage(ImageDescriptionHandle desc, Ptr inData, long inBufferSize, ICMDataProcRecordPtr dataProc, Ptr outData, long outBufferSize, ICMFlushProcRecordPtr flushProc, Rect *trimRect, ICMProgressProcRecordPtr progressProc)
  743.  TWOWORDINLINE(0x702D, 0xAAA3);
  744. extern pascal OSErr ConvertImage(ImageDescriptionHandle srcDD, Ptr srcData, short colorDepth, CTabHandle clut, CodecQ accuracy, CodecQ quality, CodecType cType, CodecComponent codec, ImageDescriptionHandle dstDD, Ptr dstData)
  745.  TWOWORDINLINE(0x7030, 0xAAA3);
  746. extern pascal OSErr GetCompressedPixMapInfo(PixMapPtr pix, ImageDescriptionHandle *desc, Ptr *data, long *bufferSize, ICMDataProcRecord *dataProc, ICMProgressProcRecord *progressProc)
  747.  TWOWORDINLINE(0x7037, 0xAAA3);
  748. extern pascal OSErr SetCompressedPixMapInfo(PixMapPtr pix, ImageDescriptionHandle desc, Ptr data, long bufferSize, ICMDataProcRecordPtr dataProc, ICMProgressProcRecordPtr progressProc)
  749.  TWOWORDINLINE(0x7038, 0xAAA3);
  750. extern pascal void StdPix(PixMapPtr src, const Rect *srcRect, MatrixRecordPtr matrix, short mode, RgnHandle mask, PixMapPtr matte, const Rect *matteRect, short flags)
  751.  TWOWORDINLINE(0x700C, 0xAAA3);
  752. extern pascal OSErr TransformRgn(MatrixRecordPtr matrix, RgnHandle rgn)
  753.  TWOWORDINLINE(0x7039, 0xAAA3);
  754. extern pascal void SFGetFilePreview(Point where, ConstStr255Param prompt, FileFilterUPP fileFilter, short numTypes, SFTypeList typeList, DlgHookUPP dlgHook, SFReply *reply)
  755.  THREEWORDINLINE(0x303C, 0x41, 0xAAA3);
  756. extern pascal void SFPGetFilePreview(Point where, ConstStr255Param prompt, FileFilterUPP fileFilter, short numTypes, SFTypeList typeList, DlgHookUPP dlgHook, SFReply *reply, short dlgID, ModalFilterUPP filterProc)
  757.  THREEWORDINLINE(0x303C, 0x42, 0xAAA3);
  758. extern pascal void StandardGetFilePreview(FileFilterUPP fileFilter, short numTypes, SFTypeList typeList, StandardFileReply *reply)
  759.  THREEWORDINLINE(0x303C, 0x43, 0xAAA3);
  760. extern pascal void CustomGetFilePreview(FileFilterYDUPP fileFilter, short numTypes, SFTypeList typeList, StandardFileReply *reply, short dlgID, Point where, DlgHookYDUPP dlgHook, ModalFilterYDUPP filterProc, short *activeList, ActivateYDUPP activateProc, void *yourDataPtr)
  761.  THREEWORDINLINE(0x303C, 0x44, 0xAAA3);
  762. extern pascal OSErr MakeFilePreview(short resRefNum, ICMProgressProcRecordPtr progress)
  763.  THREEWORDINLINE(0x303C, 0x45, 0xAAA3);
  764. extern pascal OSErr AddFilePreview(short resRefNum, OSType previewType, Handle previewData)
  765.  THREEWORDINLINE(0x303C, 0x46, 0xAAA3);
  766. #ifdef __cplusplus
  767. }
  768. #endif
  769.  
  770. enum  {
  771.     sfpItemPreviewAreaUser        = 11,
  772.     sfpItemPreviewStaticText    = 12,
  773.     sfpItemPreviewDividerUser    = 13,
  774.     sfpItemCreatePreviewButton    = 14,
  775.     sfpItemShowPreviewButton    = 15
  776. };
  777.  
  778. #if defined(powerc) || defined (__powerc)
  779. #pragma options align=mac68k
  780. #endif
  781. struct PreviewResourceRecord {
  782.     unsigned long                modDate;
  783.     short                        version;
  784.     OSType                        resType;
  785.     short                        resID;
  786. };
  787. #if defined(powerc) || defined(__powerc)
  788. #pragma options align=reset
  789. #endif
  790.  
  791. typedef struct PreviewResourceRecord PreviewResourceRecord;
  792.  
  793. typedef PreviewResourceRecord *PreviewResourcePtr, **PreviewResource;
  794.  
  795. #ifdef __cplusplus
  796. extern "C" {
  797. #endif
  798.  
  799. extern pascal void AlignScreenRect(Rect *rp, ICMAlignmentProcRecordPtr alignmentProc)
  800.  FOURWORDINLINE(0x203C, 0x8, 0x4C, 0xAAA3);
  801. extern pascal void AlignWindow(WindowPtr wp, Boolean front, const Rect *alignmentRect, ICMAlignmentProcRecordPtr alignmentProc)
  802.  FOURWORDINLINE(0x203C, 0xE, 0x4D, 0xAAA3);
  803. extern pascal void DragAlignedWindow(WindowPtr wp, Point startPt, Rect *boundsRect, Rect *alignmentRect, ICMAlignmentProcRecordPtr alignmentProc)
  804.  FOURWORDINLINE(0x203C, 0x14, 0x4E, 0xAAA3);
  805. extern pascal long DragAlignedGrayRgn(RgnHandle theRgn, Point startPt, Rect *boundsRect, Rect *slopRect, short axis, UniversalProcPtr actionProc, Rect *alignmentRect, ICMAlignmentProcRecordPtr alignmentProc)
  806.  FOURWORDINLINE(0x203C, 0x1E, 0x4F, 0xAAA3);
  807. extern pascal OSErr SetCSequenceDataRateParams(ImageSequence seqID, DataRateParamsPtr params)
  808.  FOURWORDINLINE(0x203C, 0x8, 0x50, 0xAAA3);
  809. extern pascal OSErr SetCSequenceFrameNumber(ImageSequence seqID, long frameNumber)
  810.  FOURWORDINLINE(0x203C, 0x8, 0x51, 0xAAA3);
  811. extern pascal QDErr NewImageGWorld(GWorldPtr *gworld, ImageDescription **idh, GWorldFlags flags)
  812.  FOURWORDINLINE(0x203C, 0xC, 0x52, 0xAAA3);
  813. extern pascal OSErr GetCSequenceDataRateParams(ImageSequence seqID, DataRateParamsPtr params)
  814.  FOURWORDINLINE(0x203C, 0x8, 0x53, 0xAAA3);
  815. extern pascal OSErr GetCSequenceFrameNumber(ImageSequence seqID, long *frameNumber)
  816.  FOURWORDINLINE(0x203C, 0x8, 0x54, 0xAAA3);
  817. extern pascal OSErr GetBestDeviceRect(GDHandle *gdh, Rect *rp)
  818.  FOURWORDINLINE(0x203C, 0x8, 0x55, 0xAAA3);
  819. extern pascal OSErr SetSequenceProgressProc(ImageSequence seqID, ICMProgressProcRecord *progressProc)
  820.  FOURWORDINLINE(0x203C, 0x8, 0x56, 0xAAA3);
  821. extern pascal OSErr GDHasScale(GDHandle gdh, short depth, Fixed *scale)
  822.  FOURWORDINLINE(0x203C, 0xA, 0x5A, 0xAAA3);
  823. extern pascal OSErr GDGetScale(GDHandle gdh, Fixed *scale, short *flags)
  824.  FOURWORDINLINE(0x203C, 0xC, 0x5B, 0xAAA3);
  825. extern pascal OSErr GDSetScale(GDHandle gdh, Fixed scale, short flags)
  826.  FOURWORDINLINE(0x203C, 0xA, 0x5C, 0xAAA3);
  827. extern pascal OSErr ICMShieldSequenceCursor(ImageSequence seqID)
  828.  FOURWORDINLINE(0x203C, 0x4, 0x62, 0xAAA3);
  829. extern pascal void ICMDecompressComplete(ImageSequence seqID, OSErr err, short flag, ICMCompletionProcRecordPtr completionRtn)
  830.  FOURWORDINLINE(0x203C, 0xC, 0x63, 0xAAA3);
  831. extern pascal OSErr SetDSequenceTimeCode(ImageSequence seqID, void *timeCodeFormat, void *timeCodeTime)
  832.  FOURWORDINLINE(0x203C, 0xC, 0x64, 0xAAA3);
  833. #ifdef __cplusplus
  834. }
  835. #endif
  836.  
  837. enum  {
  838.     identityMatrixType            = 0x00,
  839.     translateMatrixType            = 0x01,
  840.     scaleMatrixType                = 0x02,
  841.     scaleTranslateMatrixType    = 0x03,
  842.     linearMatrixType            = 0x04,
  843.     linearTranslateMatrixType    = 0x05,
  844.     perspectiveMatrixType        = 0x06
  845. };
  846.  
  847. typedef unsigned short MatrixFlags;
  848.  
  849. #ifdef __cplusplus
  850. extern "C" {
  851. #endif
  852.  
  853. extern pascal short GetMatrixType(MatrixRecord *m)
  854.  TWOWORDINLINE(0x7014, 0xABC2);
  855. extern pascal void CopyMatrix(MatrixRecord *m1, MatrixRecord *m2)
  856.  TWOWORDINLINE(0x7020, 0xABC2);
  857. extern pascal Boolean EqualMatrix(const MatrixRecord *m1, const MatrixRecord *m2)
  858.  TWOWORDINLINE(0x7021, 0xABC2);
  859. extern pascal void SetIdentityMatrix(MatrixRecord *matrix)
  860.  TWOWORDINLINE(0x7015, 0xABC2);
  861. extern pascal void TranslateMatrix(MatrixRecord *m, Fixed deltaH, Fixed deltaV)
  862.  TWOWORDINLINE(0x7019, 0xABC2);
  863. extern pascal void RotateMatrix(MatrixRecord *m, Fixed degrees, Fixed aboutX, Fixed aboutY)
  864.  TWOWORDINLINE(0x7016, 0xABC2);
  865. extern pascal void ScaleMatrix(MatrixRecord *m, Fixed scaleX, Fixed scaleY, Fixed aboutX, Fixed aboutY)
  866.  TWOWORDINLINE(0x7017, 0xABC2);
  867. extern pascal void SkewMatrix(MatrixRecord *m, Fixed skewX, Fixed skewY, Fixed aboutX, Fixed aboutY)
  868.  TWOWORDINLINE(0x7018, 0xABC2);
  869. extern pascal OSErr TransformFixedPoints(const MatrixRecord *m, FixedPoint *fpt, long count)
  870.  TWOWORDINLINE(0x7022, 0xABC2);
  871. extern pascal OSErr TransformPoints(const MatrixRecord *mp, Point *pt1, long count)
  872.  TWOWORDINLINE(0x7023, 0xABC2);
  873. extern pascal Boolean TransformFixedRect(const MatrixRecord *m, FixedRect *fr, FixedPoint *fpp)
  874.  TWOWORDINLINE(0x7024, 0xABC2);
  875. extern pascal Boolean TransformRect(const MatrixRecord *m, Rect *r, FixedPoint *fpp)
  876.  TWOWORDINLINE(0x7025, 0xABC2);
  877. extern pascal Boolean InverseMatrix(MatrixRecord *m, MatrixRecord *im)
  878.  TWOWORDINLINE(0x701C, 0xABC2);
  879. extern pascal void ConcatMatrix(MatrixRecord *a, MatrixRecord *b)
  880.  TWOWORDINLINE(0x701B, 0xABC2);
  881. extern pascal void RectMatrix(const MatrixRecord *matrix, Rect *srcRect, Rect *dstRect)
  882.  TWOWORDINLINE(0x701E, 0xABC2);
  883. extern pascal void MapMatrix(const MatrixRecord *matrix, Rect *fromRect, Rect *toRect)
  884.  TWOWORDINLINE(0x701D, 0xABC2);
  885. #ifdef __cplusplus
  886. }
  887. #endif
  888.  
  889. #endif
  890.  
  891.